package com.hyts.mvc.context;

import com.hyts.bind.domain.BindDomains;
import com.hyts.bind.facade.BindContext;
import com.hyts.mvc.bean.MvcConfigBean;
import com.hyts.mvc.model.HandlerWrapper;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.util.HashMap;

/**
 * project-name:coffice-toolbox
 * package-name:com.hyts.mvc.context
 * author:Libo/Alex
 * create-date:2019-06-16 18:12
 * copyright:libo-hyts-github
 * email:libo2dev@aliyun.com
 * description:此类主要用于: mvc模式总体组件的上下面容器-此部分只含有一级单层次上下文
 * @author alex
 */
@Getter
@Setter
public final class WebMvcContext extends WebServletContextAware{

    /**
     * 控制器操作处理器容器
     */
    @Getter
    @Setter
    private static HandlerContainer handlerContainer ;

    /**
     * mvc cofiguration bean 对象
     */
    @Getter
    @Setter
    private static MvcConfigBean mvcProperties;

    /**
     * 绑定上下文操作
     */
    @Getter
    @Setter
    private static BindDomains bindDomains;

    /**
     * 绑定上下文服务
     */
    @Getter
    @Setter
    private static BindContext bindContext;

    @Getter
    @Setter
    private static Class bootstrapMainClass;

    /**
     * handler控制器操作容器
     */
    public static class HandlerContainer extends HashMap<String, HandlerWrapper>{}
        /**
         * 初始化handler container 容器
         */
    public static HandlerContainer initHandlerContainer(){
         WebMvcContext.handlerContainer = new HandlerContainer();
         return WebMvcContext.handlerContainer;
    }
}
